// pages/goods_detail/goods_detail.js
import { cjRequest } from "../../utils/service";
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 商品详情数据
    goodsObj: {}
  },
  // 单独在data外存储一份商品对象数据，这样既可以使用返回的所有数据，也不用全部存在data中占用小程序内存导致卡顿
  GoodsInfo: {},
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // 获取到传进来的url参数 商品id
    const { goods_id } = options
    // 将商品id传入请求方法中
    this.getGoodsDetail(goods_id);
  },
  // 获取商品详情数据
  getGoodsDetail (goods_id) {
    cjRequest({ url: "/goods/detail", data: { goods_id } }).then(res => {
      const goodsObj = res.data.message
      // 单独在data外存储一份商品对象数据
      this.GoodsInfo = goodsObj;
      // 1 获取缓存中的商品收藏的数组
      let collect = wx.getStorageSync("collect") || [];
      // 2 判断当前商品是否被收藏
      let isCollect = collect.some(v => v.goods_id === this.GoodsInfo.goods_id);
      this.setData({
        goodsObj: {
          // 将返回的数据中页面要用到的存放进data中，防止存放过多无用数据在data中占用内存
          goods_name: goodsObj.goods_name,
          goods_price: goodsObj.goods_price,
          /*
          iphone部分手机 不识别 webp图片格式 
          最好找到后台 让他进行修改 
          临时自己改 确保后台存在 1.webp => 1.jpg 
          replace(/\.webp/g, '.jpg')  正则找到尾缀是webp的，全部替换未jpg
          */
          goods_introduce: goodsObj.goods_introduce.replace(/\.webp/g, '.jpg'),
          pics: goodsObj.pics
        },
        isCollect
      })
    })

  },
  // 点击轮播图 放大预览
  handlePrevewImage (e) {
    // 1 先构造要预览的图片数组 （全屏预览可同时预览多个图片）
    const urls = this.GoodsInfo.pics.map(v => v.pics_mid);
    // 2 接收页面点击轮播图时，传递过来的对应的图片的url，设置为预览时展开的第一张图
    const current = e.currentTarget.dataset.url;
    /**
     * 微信小程序的预览图片功能
     * current ==>预览图打开时展示的第一张图片的url
     * urls  ===> 预览图的所有图片url数组，存放要预览的所有图片url
     *  */
    wx.previewImage({
      current: current,
      urls: urls
    });

  },
  // 点击 加入购物车
  handleCartAdd () {
    // 1 获取storage缓存中的购物车数组,第一次获取,肯定没有,所以当为空时,设置为[]数组格式 ,防止cart变量被设置为其他类型
    let cart = wx.getStorageSync("cart") || [];
    // 2 判断 商品对象是否存在于购物车数组中 
    // 通过数组方法 findIndex 来在找到指定内容时返回其在数组中的下标
    // this.GoodsInfo.goods_id  ==> 当前页面中商品的id
    let index = cart.findIndex(v => v.goods_id === this.GoodsInfo.goods_id);
    if (index === -1) {
      //3  不存在 第一次添加该商品进购物车
      // 设置这个商品在购物车中的数据量为1
      this.GoodsInfo.num = 1;
      // 设置一个字段，用来表示购物车中的物品的选中状态
      this.GoodsInfo.checked = true;
      cart.push(this.GoodsInfo);
    } else {
      // 4 已经存在购物车数据 执行 num++,添加其在购物车中的数量
      cart[index].num++;
    }
    // 5 再把购物车数据重新添加回缓存中
    wx.setStorageSync("cart", cart);
    // 6 弹窗提示用户添加成功
    wx.showToast({
      title: '加入成功',
      icon: 'success',
      // true 防止用户 手抖 疯狂点击按钮 ,只有在弹窗消失后,用户才能再次点击
      mask: true
    });



  },
})